import datetime
import os
import random
import string
import time

def is_empty(value):
    if value is None:
        return True
    if isinstance(value, (str, list, tuple, dict, set)):
        return len(value) == 0
        # 对于其他类型，如数字、自定义对象等，根据业务需求处理
    # 这里可以返回False，或者根据具体情况处理
    return False





# 示例输出：'K9fR2m7q'
def get_random_str() -> str:
    characters = string.ascii_letters + string.digits

    # 生成8位不重复字符的随机字符串
    return ''.join(random.sample(characters, 8))

def format_time():
    now = datetime.datetime.now()
    return now.strftime("%Y-%m-%d %H:%M:%S")

def remove_base64str_title(base64_str: str):
    """
    移除Base64字符串可能包含的Data URI前缀
    支持格式：data:[<mediatype>][;base64],<data>
    """
    if ';' in base64_str and ',' in base64_str:
        # 分割逗号，保留逗号后的内容
        return base64_str.split(',', 1)[1]
    elif '=' in base64_str and base64_str.count('=') % 2 == 0:
        # 处理可能存在的填充符
        return base64_str
    else:
        return base64_str

    # 测试用例


def wait_for_file_content(file_path, max_attempts=30, interval=2):
    """
    等待文件存在且有内容
    :param file_path: 要监控的文件路径
    :param max_attempts: 最大尝试次数
    :param interval: 检查间隔（秒）
    :return: 文件内容（如果有）或None
    """
    attempts = 0
    while attempts < max_attempts:
        # 检查文件是否存在
        if os.path.exists(file_path):
            # 检查文件是否非空
            try:
                with open(file_path, 'r') as f:
                    content = f.read().strip()
                    if content:  # 如果有内容
                        print(f"文件 {file_path} 已有内容")
                        return content
            except Exception as e:
                print(f"读取文件时出错: {e}")

        attempts += 1
        print(f"第 {attempts} 次尝试，等待中...")
        time.sleep(interval)

    print(f"达到最大尝试次数，文件 {file_path} 仍无内容")
    return None
